/**
 * enumerable: 表示该属性是否可枚举，
 * 即是否通过for-in循环或Object.keys()返回属性，
 * 如果直接使用字面量定义对象，默认值为true
 *
 * 目前,有四个操作会忽略enumerable为false的属性。
 for…in循环：只遍历对象自身的和继承的可枚举的属性。
 Object.keys()：返回对象自身的所有可枚举的属性的键名。
 JSON.stringify()：只串行化对象自身的可枚举的属性。
 Object.assign()： 忽略enumerable为false的属性，只拷贝对象自身的可枚举的属性。
 * @type {{}}
 */
let obj = {};
Object.defineProperties(obj, {
    name: {
        value: '王昭君',
        enumerable: false,  //不可枚举
    },
    age: {
        value: 88,
        enumerable: true,   //可枚举
    },
    id:{
        value: 1,
        enumerable: true,   //可枚举
    }
})
for (let key in obj) {
    console.log("key:" + key + ',' + 'value:' + obj[key])
}

let objKeys = Object.keys(obj)
console.log(objKeys) // [ 'age', 'id' ]

